Every year, billions of dollars are spent under government and commercial projects to develop application software for embedded systems, including those used for transportation systems, defense systems, communication systems, automation systems, control systems, “smart” systems, etc. Nearly in all such cases, the application software (that is, the code) is developed and generated from scratch. Other advanced methods for producing application software that are currently used in the industry, include automatic code (autocode) generation of the application software (from a specification).
The re-use of this application software is only considered cost-effective if the new, embedded system is very similar to the previously developed system (such as the flight management application software used in airplanes). Even in such cases, many “re-use” attempts fail to be cost effective due to hidden dependencies and unique attributes that make such application software products incompatible.
Thus, an architecture where the user does not have to re-create the software code for each new application is highly desirable. Further, architecture that allows the user to produce data objects (that define all unique functionality and characteristics of an application software) without having to create a new application software code to produce the desired software product is desired.